<?php
class AuthModel {
	/**
	 * ユーザ認証ためのモデル
	 * @param string $username
	 * @param string $password
	 */
	function login ($username, $password){
		$username = trim($username);
		$password = trim($password);
		
		$db = Zend_Registry::get("connectDB");
		
		$auth = Zend_Auth::getInstance();
		
		//Zendのユーザ認証アダプタを作成する
		$authAdapter = new Zend_Auth_Adapter_DbTable();
		$authAdapter->setTableName("user")
					->setIdentityColumn("username")
					->setCredentialColumn("password")
					->setCredentialTreatment("SHA(?)");

		//ユーザ名とパスワードが空かをチェック
		if ($username == '' || $password == '')  {
			return false;
			
		}else {
			//Identity と　Credential をセットする
			$authAdapter->setIdentity($username);
			$authAdapter->setCredential($password);

			$select = $authAdapter->getDbSelect();
			$select->where("status = 1");
			
			//ユーザ認証
			$result = $auth->authenticate($authAdapter);
			if ($result->isValid()) {
				$data = $authAdapter->getResultRowObject(null,array("password"));
				$auth->getStorage()->write($data);
				
				return true;
			}else{ 

				return false;
			}
		}			
	}
	
	/**
	 * システムをファクション
	 *　SESSIONに既存している情報を削除する
	 */
	function logout(){
		$auth = Zend_Auth::getInstance();		
		$auth->clearIdentity();
	}
	
	/**
	 * ユーザがログインしているかをチェック
	 */
	function isLoggedIn(){
		$auth = Zend_Auth::getInstance();
		return $auth->hasIdentity();
	}
	
	function getUserInfo($info_name = null){
		if(!$this->isLoggedIn())
			return null;
		
		$auth = Zend_Auth::getInstance();
		$user_info = $auth->getIdentity();
		
		if($info_name == null){
			
			return $user_info;
		}else if($info_name == 'username'){
			
			return $user_info->username;
		}else if($info_name == 'email'){
			
			return $user_info->email;
		}else if($info_name == 'name'){
			
			return $user_info->name;
		}else if($info_name == 'phone'){
			
			return $user_info->phone;
		}else if($info_name == 'type'){
			
			return $user_info->type;
		}else{
			
			return null;
		}
	}
}